perm filename PAT[NET,KMC] blob
sn#142409 filedate 1975-01-25 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002
C00007 ENDMK
C⊗;
% THIS IS A PROGRAM NEEDED BY 'PAT'. TO RECONSTRUCT THE DOCJOB CORE IMAGE:
.R MLISPC ( TRANSLATE DOCJOB )
*(MLISP DOCJOB NIL)
*↑C
.R LISP 16 ( READ IN THE LSP CODE )
ALLOC? Y
FULL WDS=2000_ ( _ MEANS <SPACE> )
BIN.PROG.SP=2600_
SPEC.PDL=_
REG. PDL=_
HASH=_
*(DSKIN (DOC.LSP) SYS: UTILS)
*(MAIL_INIT)
*(INITFN (QUOTE RESTART))
*↑C
.SAVE DOCJOB
TO RUN THE PROGRAM, TYPE
.RUN DOCJOB[4,KMC]
%
BEGIN
NEW FILEAREA,INFILE,OUTFILE;
SPECIAL FILEAREA,INFILE,OUTFILE,MESSNO;
EXPR ERROR(L); PRINT(L);
EXPR LPRINT(L); MAPC('PRINC,REVERSE(L));
EXPR SENDMESS(L);
BEGIN NEW A,CHAN;
A←ERRSET( CHAN←EVAL< 'OUTPUT,FILEAREA,OUTFILE >, NIL);
IF ¬A THEN ERROR("CANT SEND OUTPUT") ALSO EXIT();
OUTC(CHAN,NIL);
MESSNO←MESSNO+1; PRINT MESSNO; PRINT L;
OUTC(NIL,T);
END;
EXPR WAITONMESS(N,FLAG);
BEGIN NEW A;
WHILE ¬A←MAILIN(N) DO BEGIN
IF FLAG THEN PRINTSTR("WAITING...");
SLEEP(10);
END;
RETURN A;
END;
EXPR MAILIN(N);
BEGIN NEW A,CHAN;
A←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,INFILE >, NIL);
IF ¬A THEN RETURN NIL;
INC(CHAN,NIL);
A←READ(); IF ¬(A=N) THEN INC(NIL,T) ALSO RETURN NIL;
A←READ();
INC(NIL,T);
RETURN A;
END;
EXPR CHECKMAIL();
BEGIN NEW A,B,C,D,CHAN;
A←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,INFILE >, NIL);
IF ¬A THEN ERROR( "CANT RESTART -- FILE WAS DELETED" );
INC(CHAN,NIL); A←READ(); B←READ(); INC(NIL,T);
C←ERRSET( CHAN←EVAL< 'INPUT,FILEAREA,OUTFILE >, NIL);
IF ¬C THEN ERROR( "CANT RESTART -- FILE WAS DELETED" );
INC(CHAN,NIL); C←READ(); D←READ(); INC(NIL,T);
RETURN <A,B,C,D>;
END;
EXPR SLEEP(N); SLEEP2(N);
EXPR SLEEP2(N);
FOR I←1 TO N BY 1 DO PRINT(I);
EXPR RUN();
BEGIN NEW A,RESTART,CH,L;
FILEAREA←'(NET KMC); INFILE←'OUT; OUTFILE←'IN;
MESSNO←0;
PRINC("ARE YOU STARTING A CONVERSATION
OR RESTARTING AFTER A SYSTEM CRASH?[S OR R]");
RESTART←READ(); RESTART←¬(RESTART='S);
IF ¬RESTART THEN BEGIN
PRINTSTR "
IF THE SYSTEM GOES DOWN,
YOU MAY HAVE TO RETYPE YOUR LAST QUESTION.
WE WILL BE READY TO GO IN A MINUTE.
";
A←WAITONMESS(1,T);
IF ¬(A EQUAL '(RRRRREADY)) THEN ERROR("INITIALIZATION NO GOOD");
SENDMESS( '(RRRRREADY) );
PRINTSTR "
END INPUT WITH TWO ALTMODES.
";
END
ELSE %RESTART ROUTINE% BEGIN
L←CHECKMAIL();
IF CAR L=CADDR L THEN PRINTSTR "LAST OUTPUT: " ALSO LPRINT(CADDDR L)
ALSO PRINTSTR "WAITING..." ALSO RESTART←NIL
ELSE PRINTSTR "LAST INPUT: " ALSO LPRINT(CADR L);
MESSNO←CADDR L;
END;
WHILE T DO BEGIN
IF ¬RESTART THEN BEGIN
L←WAITONMESS(MESSNO+1,NIL);
TERPRI NIL;
PRINTSTR "INTERVIEWER:";
LPRINT(L);
END;
RESTART←NIL;
TERPRI TERPRI NIL; L←NIL;
PRINTSTR "READY:";
DO NIL UNTIL (CH ← READCH()) NEQ CR & CH NEQ LF & CH NEQ ALTMODE;
TERPRI DO L ← CH CONS L UNTIL (CH ← READCH()) EQ ALTMODE & (CH ← READCH()) EQ ALTMODE;
SENDMESS(L);
END;
END;
RUN();
END.